import axios, { type AxiosRequestHeaders, type AxiosResponse } from 'axios'
import pinia from '@/stores/index'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
/* 定义response对象的data接口 */
// interface ResponseData<T> {
//   code: number
//   data: T
//   message: string
// }

// 配置新建一个 axios 实例
const service = axios.create({
  baseURL: '/sph', //相当于'/app-dev'
  timeout: 50000
})

// 添加请求拦截器
service.interceptors.request.use((config) => {
  nprogress.start()
  let token = localStorage.getItem('token_key')
  if (token) {
    ;(config.headers as AxiosRequestHeaders).token = token
  }
  return config
})

// 添加响应拦截器
service.interceptors.response.use(
  /* 约束一下response */
  async (response: AxiosResponse<any>) => {
    // 对响应数据做点什么
    nprogress.done()
    const res = response.data
    if (response.status !== 200) {
      /* 成功数据的code值为20000/200 */
      // 统一的错误提示

      return new Promise(() => {})
    } else {
      return res.data /* 返回成功响应数据中的data属性数据 */
    }
  },
  (error) => {
    return new Promise(() => {})
  }
)

export default service
